package concreto.redeneural;

import java.util.ArrayList;
import java.util.List;

import comportamento.neuronio.INeuronio;
import comportamento.redeneural.ICamadaNeuralFeedFoward;

public class CamadaNeuralFeedFowardMP implements ICamadaNeuralFeedFoward{

    private List<INeuronio> neuronios = new ArrayList<INeuronio>(); 
    
    public void adicionarNeuronio(INeuronio neuronio) {

	neuronios.add(neuronio);
    }

    public double[] estimular(double[] estimulos) {

	int quantidadeEstimulos = estimulos.length;
	double[] estimulacao = new double[quantidadeEstimulos];
	double[] saidas = null;
	
	int aux = 0;
	int saidas_aux = 0;
	
	for(INeuronio n : neuronios) {
	    
	    estimulacao[aux++] = n.estimular(estimulos);
	    saidas_aux++;
	}
	
	saidas = new double[saidas_aux];
	
	for(int i = 0; i < saidas_aux; i++) {
	    saidas[i] = estimulacao[i];
	}
	
	return saidas;
    }

    public void removerNeuronio(INeuronio neuronio) {

	neuronios.remove(neuronio);
    }

    /* (non-Javadoc)
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {

	StringBuffer b = new StringBuffer("");
	int contNeuronios = 1;
	
	for(INeuronio n : neuronios) {
	    b.append("\n\n[Neuronio " + (contNeuronios++) + "]\n");
	    b.append(n);
	}
	
	return b.toString();
    }

    public void treinar(double[][] entradas, double[][] saidas) {
	// TODO Auto-generated method stub
    }

    public void treinar(double[] treino, double[][] saidas) {
	// TODO Auto-generated method stub
	
    }
    
}
